package com.cloudkinto.bo.order.outbound;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 中转出库单提交/草稿
 *
 * @author long
 */
@Data
public class TransferOrderOutboundSaveBo {
    private Long id;

    /**
     * 状态
     */
    @ApiModelProperty("status状态")
    private Integer status;

    /**
     * 仓库id
     */
    @ApiModelProperty(value = "仓库id", required = true)
    @NotNull(message = "仓库id不能为空")
    private Long whId;

    /**
     * 物流渠道id
     */
    @ApiModelProperty(value = "物流渠道id", required = true)
    @NotNull(message = "物流渠道id不能为空")
    private Long logisticsChannelId;

    /**
     * 承运商代码
     */
    @ApiModelProperty(value = "承运商")
    private String carrier;

    @ApiModelProperty(value = "面单id")
    private Long labelFileId;

    /**
     * 目的地类型 1药妆店 2经销商
     */
    @NotNull(message = "目的地类型不可为空")
    @ApiModelProperty(value = "目的地类型 1药妆店 2经销商", required = true)
    private Integer destinationType;

    /**
     * 出库方式 1按产品出库 2按箱出库
     */
    @NotNull(message = "出库方式不可为空")
    @ApiModelProperty(value = "出库方式 1按产品出库 2按箱出库", required = true)
    private Integer outboundMode;

    /**
     * FBA装运ID
     */
    @ApiModelProperty(value = "FBAShipmentID")
    private String fbaShipmentId;

    /**
     * 货件追踪码
     */
    @ApiModelProperty(value = "货件追踪码")
    private String shipmentTrackingCode;

    /**
     * 物流跟踪号
     */
    @ApiModelProperty(value = "物流跟踪号")
    private String trackingNumber;

    @ApiModelProperty("配送时间")
    private String deliveryDate;

    @ApiModelProperty("配送时间带")
    private String deliveryTimeName;

    /**
     * 参考单号
     */
    @ApiModelProperty(value = "参考单号")
    private String referenceNumber;

    private String remark;
    private String remark2;

    /**
     * 总数
     */
    @ApiModelProperty(value = "总数", required = true)
    @NotNull(message = "总数不可为空")
    private Integer totalNum;

    /**
     * 收件人
     */
    @ApiModelProperty(value = "收件人", required = true)
    @NotEmpty(message = "收件人不可为空")
    private String receiver;

    /**
     * 电话
     */
    @ApiModelProperty(value = "电话")
    private String phone;

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱")
    private String email;

    /**
     * 收件人税号
     */
    @ApiModelProperty(value = "收件人税号")
    private String taxNum;

    /**
     * 公司名称
     */
    @ApiModelProperty(value = "公司名称")
    private String companyName;

    private String companyTag;

    /**
     * 国家地区二字码
     */
    @ApiModelProperty(value = "国家地区二字码", required = true)
    @NotEmpty(message = "国家地区二字码不可为空")
    private String countryRegionCode;

    /**
     * 省/州
     */
    @ApiModelProperty(value = "省/州")
    private String provinceName;

    /**
     * 城市名称
     */
    @ApiModelProperty(value = "城市名称", required = true)
//    @NotEmpty(message = "城市名称不可为空")
    private String cityName;

    /**
     * 邮编
     */
    @ApiModelProperty(value = "邮编", required = true)
    @NotEmpty(message = "邮编不可为空")
    private String postCode;

    /**
     * 门牌号
     */
    @ApiModelProperty(value = "门牌号")
    private String houseNum;

    /**
     * 地址1
     */
    @ApiModelProperty(value = "地址1", required = true)
    @NotEmpty(message = "地址1不可为空")
    private String address1;

    /**
     * 地址2
     */
    @ApiModelProperty(value = "地址2")
    private String address2;

    /**
     * 附件
     */
    @ApiModelProperty(value = "附件ids,逗号分隔")
    private String appendixIds;

    @ApiModelProperty(value = "自定义渠道名")
    private String customizeChannelName;

    /**
     * 产品信息
     */
    @ApiModelProperty(value = "产品信息", required = true)
    @NotNull(message = "产品信息不可为空")
    private List<TransferOrderOutboundProductSaveBo> productInfoList;

}
